package com.wxp.demo04.message;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import com.wxp.demo04.R;
import com.wxp.demo04.util.LogUtils;

/**
 * 2.1.1.1 显式Intent 传递信息
 */
public class ShowIntentSendActivity extends AppCompatActivity implements View.OnClickListener {

    /**
     * 界面返回结果对象
     */
    private ActivityResultLauncher<Intent> activityResultLauncher;
    private EditText tvResultMessage;
    private TextView tvSendMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_show_intent_send);

        this.setTitle("2.1.1.1 显式Intent 传递信息");
        //向一个界面传递信息
        findViewById(R.id.btn_send1).setOnClickListener(this);
        findViewById(R.id.btn_send2).setOnClickListener(this);
        findViewById(R.id.btn_send3).setOnClickListener(this);

        //接收界面返回的信息
        tvResultMessage = findViewById(R.id.tv_result_message);
        tvSendMessage = findViewById(R.id.tv_send_message);
        findViewById(R.id.btn_send_result).setOnClickListener(this);


        //注册界面返回结果对象
        activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                //获取返回的数据
                if (result == null) {
                    return;
                }
                Intent intent = result.getData();
                //判断状态
                if (result.getResultCode() != Activity.RESULT_OK) {
                    LogUtils.error("返回状态为：" + result.getResultCode());
                    return;
                }
                if (intent == null) {
                    LogUtils.error("返回数据信息为空");
                    return;
                }
                String name = intent.getStringExtra("name");
                String message = intent.getStringExtra("message");
                //展示信息
                LogUtils.info("返回信息-name：%s", name);
                LogUtils.info("返回信息-message：%s", message);
                tvResultMessage.setText("name：" + name + "\n" + "message：" + message);
            }
        });


    }

    @Override
    public void onClick(View v) {
        //========================接收界面返回的信息======================>
        if (v.getId() == R.id.btn_send_result) {
            //获取发送信息
            String message = tvSendMessage.getText().toString().replace("待发送信息：", "");

            //创建跳转界面
            Intent intent = new Intent(this, ShowIntentReceiveActivity.class);
            intent.putExtra("name", "远方的朋友");
            intent.putExtra("message", message);
            //启动界面并接收返回的信息
            activityResultLauncher.launch(intent);
        }

        //========================向下一个界面传送数据======================>
        //显示Intent创建
        if (v.getId() == R.id.btn_send1) {
            //方式1
            Intent intent = new Intent(this, ShowIntentReceiveActivity.class);
            //添加数据
            intent.putExtra("name", "new Intent(上下文,跳转的界面)");
            intent.putExtra("message", "有参构造器 显式方式-传递数据");

            //启动新界面
            startActivity(intent);
            return;
        }

        if (v.getId() == R.id.btn_send2) {

            //方式2
            // 创建一个新意图
            Intent intent2 = new Intent();
            //设置意图要跳转的目标活动
            intent2.setClass(this, ShowIntentReceiveActivity.class);
            //或者指定包名跟类名
//        intent2.setClassName("","");
            intent2.putExtra("name", "setClass(上下文,跳转的界面)");
            intent2.putExtra("message", "setClass 显式方式-传递数据");

            //启动新界面
            startActivity(intent2);
            return;
        }

        if (v.getId() == R.id.btn_send3) {
            //方式3
            // 创建一个新意图
            Intent intent3 = new Intent();
            // 创建包含目标活动在内的组件名称对象
            ComponentName component = new ComponentName(this, ShowIntentReceiveActivity.class);
            // 设置意图携带的组件信息
            intent3.setComponent(component);
            intent3.putExtra("name", "new ComponentName(上下文,跳转的界面)");
            intent3.putExtra("message", "setComponent 显式方式-传递数据");

            //启动新界面
            startActivity(intent3);
            return;
        }
    }
}